home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Compendium Deluxe 2
/
LSD and 17bit Compendium Deluxe - Volume II.iso
/
a
/
prog
/
asmsrc
/
sfintro1.lha
/
singleintro2.s
Wrap
Text File
|
1994-06-05
|
33KB
|
1,797 lines
Section Copperlist,code_C
;old intro and old boards, i think there all dead now!
;and dodgy player
;by shgartt/lsd
opt c-,o+,w-
xpos1 = $07
xpos2 = $07
black = $300
tall = 8
wide = 80
time = 200 ; time page is displayed for
setsprite MACRO
dc.w $0fe0,$0820,$3c78,$2448,$600c,$5014,$4004,$2008
dc.w $c006,$8002,$c006,$4004,$8002,$0000,$8002,$0000
dc.w $8002,$0000,$c006,$4004,$c006,$8002,$4004,$2008
dc.w $600c,$5014,$3c78,$2448,$0fe0,$0820,$0000,$0000
ENDM
************
lea $dff000,a5 ; hardware base address
Move.w $1c(a5),OldInt ; Save Old Interupts
Move.w $02(a5),OldDma ; Save Old DMA
Move.w #$7fff,$9a(a5) ; Clear DMA
Move.w #$7fff,$96(a5) ; Clear Interupts
Move.w #$7fff,$9c(a5) ; Clear Interupt Requests
Move.b #$7f,$bfed01 ; kill timers (rem me for disk)
Move.l $6c.w,OldV3 ; save level 3 int
Move.l #my_level3,$6c.w ; put new copper interupt
Move.l #my_copper,$80(a5) ; Address of copper 1
Move.w #$c010,$9a(a5) ; Start interupts
Move.w #$83ef,$96(a5) ; Start DMA ( 83ff for disk dma)
Move.w #1,$88(a5) ; Strobe for copper start
bsr mt_init
move.l #Screen+32,d0 ; store address of bitplane0
move.w d0,bitplane0_lo ; into the copper list
swap d0
move.w d0,bitplane0_hi
swap d0
add.l #bplen,d0
move.w d0,bitplane1_lo ; into the copper list
swap d0
move.w d0,bitplane1_hi
swap d0
add.l #bplen,d0
move.w d0,bitplane2_lo ; into the copper list
swap d0
move.w d0,bitplane2_hi
swap d0
add.l #bplen,d0
move.w d0,bitplane3_lo ; into the copper list
swap d0
move.w d0,bitplane3_hi
move.l #screen2+20,d0
move.w d0,bitplane4_lo
swap d0
move.w d0,bitplane4_hi
move.l #spritex1,d0
move.w d0,spr1_hi
swap d0
move.w d0,spr1_lo
move.l #spritex2,d0
move.w d0,spr2_hi
swap d0
move.w d0,spr2_lo
move.l #spritex3,d0
move.w d0,spr3_hi
swap d0
move.w d0,spr3_lo
again:
lea page1,a0
bsr show_page
bne shutdown
lea page2,a0
bsr show_page
bne shutdown
lea page3,a0
bsr show_page
bne shutdown
lea page4,a0
bsr show_page
bne shutdown
bra again
shutdown:
lea $dff000,a5 ; hardware base address
move.l #0,$80(a5) ; blank copper list
move.l #0,$84(a5) ; if gfx lib not open (slayer boot)
move.w #0,$180(a5) ; bgc to black
Move.l OldV3,$6c.w ; restore old l3
cmp.w #$7fff,olddma
beq no_gfx_lib
Lea glib,a1 ; Pointer to Library Text
move.l 4.w,a6
jsr -132(a6) ; forbid
Move.l 4.w,a6 ; Exec
Moveq.l #0,d0 ; Clear D0
Jsr -$228(a6) ; Open Library
cmp.l #0,d0
beq no_gfx_lib ; if gfx lib not open dont restore copper lib (slayer boot)
Move.l d0,a1
Move.l $26(a1),$80(a5) ; restore copper 1
Move.l $32(a1),$84(a5) ; restore copper 2
no_gfx_lib:
Move.w OldInt,d0 ; start old interupts
Or.w #$8000,d0
Move.w d0,$9a(a5)
Move.w OldDma,d0 ; start old DMA
Or.w #$8000,d0
Move.w d0,$96(a5)
Move.b #$9b,$bfed01 ; Start Timers
Move.l 4.w,a6 ; Close Gfx lib
Jsr -$19e(a6)
move.l 4.w,a6
jsr -138(a6) ; permit
bsr mt_end
move.w #0,$bfec00 ; clear kbd
Moveq.l #0,d0 ; No errors
Rts ; Exit
bsr mt_end
Error: moveq #0,d0 ; fin
rts
show_page:
move.w #0,fade_colour
move.l a0,page
bsr setup_screen
move.w #$111,fade_colour
wait_fade1:
cmp.w #$fff,colour_on+2
bne wait_fade1
move.w #0,fade_colour
bsr keys
cmp.l #0,d0
bne stop
move.w #-$111,fade_colour
wait_fade2:
cmp.w #$000,colour_on+2
bne wait_fade2
stop:
rts
keys: move.l #time*$1000,d0
waiting:
sub.l #1,d0
beq keys2
btst #6,$bfe001
bne.s waiting
keys2: btst #6,$bfe001
beq.s keys2
rts
my_level3:
Movem.l d0-d7/a0-a6,-(a7) ; New copper
Move.w #$10,$dff09c ; Serviced Interupt
cmp.w #0,fade_colour
beq no_fade
move.w fade_colour,d0
add.w d0,colour_on+2
no_fade:
bsr mt_music
lea spritex1,a0
move.w #12,d0
spr1_loop:
add.b #1,1(a0)
add.l #68,a0
dbf d0,spr1_loop
lea spritex2,a0
move.w #12,d0
spr2_loop:
add.b #2,1(a0)
add.l #68,a0
dbf d0,spr2_loop
lea spritex3,a0
move.w #11,d0
spr3_loop:
add.b #3,1(a0)
add.l #68,a0
dbf d0,spr3_loop
Exit: Movem.l (a7)+,d0-d7/a0-a6
Rte ; Return from Interupt
setup_screen:
lea cmap+2,a0
lea screen,a1
move.w #15,d0
cmap_loop:
move.w (a1)+,(a0)
add.l #4,a0
dbf d0,cmap_loop
lea screen2,a0
move.w #5119,d0
cls: move.l #0,(a0)+
dbf d0,cls
move.l page,a1
move.l #screen2,a2
add.l #(wide*2)+1,a2
jsr blit_message
moveq.l #10,d0
plot_again:
add.l #wide*tall,a2
jsr blit_message
move.b (a1),d0
bne.s plot_again
rts
blit_message:
movem.l d0-d7/a2-a6,-(sp)
move.l #0,midadd
move.l a1,a6
clr.b d0
moveq.l #-1,d1
blit_message_loop1:
addq.l #1,d1
move.b (a6),d0
addq #1,a6
cmp.b #0,d0
bne.s blit_message_loop1
move.w d1,d5
and.w #1,d5
asl.w #1,d5
move.w d5,mid
move.l a2,midadd
move.w d1,d5
addq.l #1,d1
lsr.l #1,d1
moveq.l #wide/2,d6
sub.l d1,d6
add.l d6,a2
move.l a2,d2
and.l #$fffffffe,d2
move.l a2,d3
and.l #1,d3
move.l d2,a2
move.w #12,d6
cmp.l #1,d3
beq.s cont_blit_message
add.w #12,mid
subq.l #2,midadd
cont_blit_message:
move.w d6,d7
mulu #8192,d7
subq.w #4,d6
cmp.w #4,d6
bne.s other_half
move.w #12,d6
add.l #wide*2,a2
other_half:
sub.l #wide,a2
clr.w d0
lea font,a0
move.b (a1),d0
addq.l #1,a1
cmp.b #0,d0
bne.s mess_is_ok
movem.l (sp)+,d0-d7/a2-a6
move.w mid,d5
mulu #8192,d5
or.w #(%1001*256)+$f0,d5
move.l midadd,a3
Move.l a3,$dff054 ; dest mem d
Move.l a2,$dff050 ; source mem a
Move.w #$ffff,$dff044 ; blit 1st word mask source a
move.w #$ffff,$dff046 ; blit last word mask source a
move.w #0,$dff064 ; blit modulo for source a
move.w d5,$dff040
move.w #0,$dff042 ; blit cont reg 1
Move.w #0,$dff066 ; modulo for dest
Move.w #(8*64)+wide/2,$dff058 ; blit height,width
jsr do_blit
dont_centre:
rts
mess_is_ok:
sub #32,d0
mulu #16,d0
add d0,a0
Move.l a2,$dff054 ; dest mem d
Move.l a0,$dff050 ; source mem a
move.l a2,$dff048 ; source mem c
Move.w #$ffff,$dff044 ; blit 1st word mask source a
move.w #$ffff,$dff046 ; blit last word mask source a
move.w #0,$dff064 ; blit modulo for source a
move.w #wide-2,$dff060 ; blit modulo for source c
or.w #(%1011*256)+$fa,d7
move.w d7,$dff040 ; blit cont reg 0
move.w #0,$dff042 ; blit cont reg 1
Move.w #wide-2,$dff066 ; modulo for dest
Move.w #(8*64)+1,$dff058 ; blit height,width
jsr do_blit
addq.l #1,a2
bra cont_blit_message
do_blit:
btst.b #6,$dff002
bne.s do_blit
rts
tadd equ 230*46
;********************************************
;* ----- Protracker V1.1B Playroutine ----- *
;* Lars "Zap" Hamre/Amiga Freelancers 1991 *
;* Bekkeliveien 10, N-2010 STRØMMEN, Norway *
;********************************************
; VBlank Version 2:
; Call mt_init to initialize the routine, then call mt_music on
; each vertical blank (50 Hz). To end the song and turn off all
; voices, call mt_end.
; This playroutine is not very fast, optimized or well commented,
; but all the new commands in PT1.1A should work.
; If it's not good enough, you'll have to change it yourself.
; We'll try to write a faster routine soon...
; Changes from V1.0C playroutine:
; - Vibrato depth changed to be compatible with Noisetracker 2.0.
; You'll have to double all vib. depths on old PT modules.
; - Funk Repeat changed to Invert Loop.
; - Period set back earlier when stopping an effect.
DMAWait = 300 ; Set this as low as possible without losing low notes.
n_note EQU 0 ; W
n_cmd EQU 2 ; W
n_cmdlo EQU 3 ; B
n_start EQU 4 ; L
n_length EQU 8 ; W
n_loopstart EQU 10 ; L
n_replen EQU 14 ; W
n_period EQU 16 ; W
n_finetune EQU 18 ; B
n_volume EQU 19 ; B
n_dmabit EQU 20 ; W
n_toneportdirec EQU 22 ; B
n_toneportspeed EQU 23 ; B
n_wantedperiod EQU 24 ; W
n_vibratocmd EQU 26 ; B
n_vibratopos EQU 27 ; B
n_tremolocmd EQU 28 ; B
n_tremolopos EQU 29 ; B
n_wavecontrol EQU 30 ; B
n_glissfunk EQU 31 ; B
n_sampleoffset EQU 32 ; B
n_pattpos EQU 33 ; B
n_loopcount EQU 34 ; B
n_funkoffset EQU 35 ; B
n_wavestart EQU 36 ; L
n_reallength EQU 40 ; W
mt_init LEA mt_data,A0
MOVE.L A0,mt_SongDataPtr
MOVE.L A0,A1
LEA 952(A1),A1
MOVEQ #127,D0
MOVEQ #0,D1
mtloop MOVE.L D1,D2
SUBQ.W #1,D0
mtloop2 MOVE.B (A1)+,D1
CMP.B D2,D1
BGT.S mtloop
DBRA D0,mtloop2
ADDQ.B #1,D2
LEA mt_SampleStarts(PC),A1
ASL.L #8,D2
ASL.L #2,D2
ADD.L #1084,D2
ADD.L A0,D2
MOVE.L D2,A2
MOVEQ #30,D0
mtloop3 CLR.L (A2)
MOVE.L A2,(A1)+
MOVEQ #0,D1
MOVE.W 42(A0),D1
ASL.L #1,D1
ADD.L D1,A2
ADD.L #30,A0
DBRA D0,mtloop3
OR.B #2,$BFE001
MOVE.B #6,mt_speed
CLR.B mt_counter
CLR.B mt_SongPos
CLR.W mt_PatternPos
mt_end CLR.W $DFF0A8
CLR.W $DFF0B8
CLR.W $DFF0C8
CLR.W $DFF0D8
MOVE.W #$F,$DFF096
RTS
mt_music
MOVEM.L D0-D4/A0-A6,-(SP)
ADDQ.B #1,mt_counter
MOVE.B mt_counter(PC),D0
CMP.B mt_speed(PC),D0
BLO.S mt_NoNewNote
CLR.B mt_counter
TST.B mt_PattDelTime2
BEQ.S mt_GetNewNote
BSR.S mt_NoNewAllChannels
BRA mt_dskip
mt_NoNewNote
BSR.S mt_NoNewAllChannels
BRA mt_NoNewPosYet
mt_NoNewAllChannels
LEA $DFF0A0,A5
LEA mt_chan1temp(PC),A6
BSR mt_CheckEfx
LEA $DFF0B0,A5
LEA mt_chan2temp(PC),A6
BSR mt_CheckEfx
LEA $DFF0C0,A5
LEA mt_chan3temp(PC),A6
BSR mt_CheckEfx
LEA $DFF0D0,A5
LEA mt_chan4temp(PC),A6
BRA mt_CheckEfx
mt_GetNewNote
MOVE.L mt_SongDataPtr(PC),A0
LEA 12(A0),A3
LEA 952(A0),A2 ;pattpo
LEA 1084(A0),A0 ;patterndata
MOVEQ #0,D0
MOVEQ #0,D1
MOVE.B mt_SongPos(PC),D0
MOVE.B (A2,D0.W),D1
ASL.L #8,D1
ASL.L #2,D1
ADD.W mt_PatternPos(PC),D1
CLR.W mt_DMACONtemp
LEA $DFF0A0,A5
LEA mt_chan1temp(PC),A6
BSR.S mt_PlayVoice
LEA $DFF0B0,A5
LEA mt_chan2temp(PC),A6
BSR.S mt_PlayVoice
LEA $DFF0C0,A5
LEA mt_chan3temp(PC),A6
BSR.S mt_PlayVoice
LEA $DFF0D0,A5
LEA mt_chan4temp(PC),A6
BSR.S mt_PlayVoice
BRA mt_SetDMA
mt_PlayVoice
TST.L (A6)
BNE.S mt_plvskip
BSR mt_PerNop
mt_plvskip
MOVE.L (A0,D1.L),(A6)
ADDQ.L #4,D1
MOVEQ #0,D2
MOVE.B n_cmd(A6),D2
AND.B #$F0,D2
LSR.B #4,D2
MOVE.B (A6),D0
AND.B #$F0,D0
OR.B D0,D2
TST.B D2
BEQ mt_SetRegs
MOVEQ #0,D3
LEA mt_SampleStarts(PC),A1
MOVE D2,D4
SUBQ.L #1,D2
ASL.L #2,D2
MULU #30,D4
MOVE.L (A1,D2.L),n_start(A6)
MOVE.W (A3,D4.L),n_length(A6)
MOVE.W (A3,D4.L),n_reallength(A6)
MOVE.B 2(A3,D4.L),n_finetune(A6)
MOVE.B 3(A3,D4.L),n_volume(A6)
MOVE.W 4(A3,D4.L),D3 ; Get repeat
TST.W D3
BEQ.S mt_NoLoop
MOVE.L n_start(A6),D2 ; Get start
ASL.W #1,D3
ADD.L D3,D2 ; Add repeat
MOVE.L D2,n_loopstart(A6)
MOVE.L D2,n_wavestart(A6)
MOVE.W 4(A3,D4.L),D0 ; Get repeat
ADD.W 6(A3,D4.L),D0 ; Add replen
MOVE.W D0,n_length(A6)
MOVE.W 6(A3,D4.L),n_replen(A6) ; Save replen
MOVEQ #0,D0
MOVE.B n_volume(A6),D0
MOVE.W D0,8(A5) ; Set volume
BRA.S mt_SetRegs
mt_NoLoop
MOVE.L n_start(A6),D2
ADD.L D3,D2
MOVE.L D2,n_loopstart(A6)
MOVE.L D2,n_wavestart(A6)
MOVE.W 6(A3,D4.L),n_replen(A6) ; Save replen
MOVEQ #0,D0
MOVE.B n_volume(A6),D0
MOVE.W D0,8(A5) ; Set volume
mt_SetRegs
MOVE.W (A6),D0
AND.W #$0FFF,D0
BEQ mt_CheckMoreEfx ; If no note
MOVE.W 2(A6),D0
AND.W #$0FF0,D0
CMP.W #$0E50,D0
BEQ.S mt_DoSetFineTune
MOVE.B 2(A6),D0
AND.B #$0F,D0
CMP.B #3,D0 ; TonePortamento
BEQ.S mt_ChkTonePorta
CMP.B #5,D0
BEQ.S mt_ChkTonePorta
CMP.B #9,D0 ; Sample Offset
BNE.S mt_SetPeriod
BSR mt_CheckMoreEfx
BRA.S mt_SetPeriod
mt_DoSetFineTune
BSR mt_SetFineTune
BRA.S mt_SetPeriod
mt_ChkTonePorta
BSR mt_SetTonePorta
BRA mt_CheckMoreEfx
mt_SetPeriod
MOVEM.L D0-D1/A0-A1,-(SP)
MOVE.W (A6),D1
AND.W #$0FFF,D1
LEA mt_PeriodTable(PC),A1
MOVEQ #0,D0
MOVEQ #36,D7
mt_ftuloop
CMP.W (A1,D0.W),D1
BHS.S mt_ftufound
ADDQ.L #2,D0
DBRA D7,mt_ftuloop
mt_ftufound
MOVEQ #0,D1
MOVE.B n_finetune(A6),D1
MULU #36*2,D1
ADD.L D1,A1
MOVE.W (A1,D0.W),n_period(A6)
MOVEM.L (SP)+,D0-D1/A0-A1
MOVE.W 2(A6),D0
AND.W #$0FF0,D0
CMP.W #$0ED0,D0 ; Notedelay
BEQ mt_CheckMoreEfx
MOVE.W n_dmabit(A6),$DFF096
BTST #2,n_wavecontrol(A6)
BNE.S mt_vibnoc
CLR.B n_vibratopos(A6)
mt_vibnoc
BTST #6,n_wavecontrol(A6)
BNE.S mt_trenoc
CLR.B n_tremolopos(A6)
mt_trenoc
MOVE.L n_start(A6),(A5) ; Set start
MOVE.W n_length(A6),4(A5) ; Set length
MOVE.W n_period(A6),D0
MOVE.W D0,6(A5) ; Set period
MOVE.W n_dmabit(A6),D0
OR.W D0,mt_DMACONtemp
BRA mt_CheckMoreEfx
mt_SetDMA
MOVE.W #300,D0
mt_WaitDMA
DBRA D0,mt_WaitDMA
MOVE.W mt_DMACONtemp(PC),D0
OR.W #$8000,D0
MOVE.W D0,$DFF096
MOVE.W #300,D0
mt_WaitDMA2
DBRA D0,mt_WaitDMA2
LEA $DFF000,A5
LEA mt_chan4temp(PC),A6
MOVE.L n_loopstart(A6),$D0(A5)
MOVE.W n_replen(A6),$D4(A5)
LEA mt_chan3temp(PC),A6
MOVE.L n_loopstart(A6),$C0(A5)
MOVE.W n_replen(A6),$C4(A5)
LEA mt_chan2temp(PC),A6
MOVE.L n_loopstart(A6),$B0(A5)
MOVE.W n_replen(A6),$B4(A5)
LEA mt_chan1temp(PC),A6
MOVE.L n_loopstart(A6),$A0(A5)
MOVE.W n_replen(A6),$A4(A5)
mt_dskip
ADD.W #16,mt_PatternPos
MOVE.B mt_PattDelTime,D0
BEQ.S mt_dskc
MOVE.B D0,mt_PattDelTime2
CLR.B mt_PattDelTime
mt_dskc TST.B mt_PattDelTime2
BEQ.S mt_dska
SUBQ.B #1,mt_PattDelTime2
BEQ.S mt_dska
SUB.W #16,mt_PatternPos
mt_dska TST.B mt_PBreakFlag
BEQ.S mt_nnpysk
SF mt_PBreakFlag
MOVEQ #0,D0
MOVE.B mt_PBreakPos(PC),D0
CLR.B mt_PBreakPos
LSL.W #4,D0
MOVE.W D0,mt_PatternPos
mt_nnpysk
CMP.W #1024,mt_PatternPos
BLO.S mt_NoNewPosYet
mt_NextPosition
MOVEQ #0,D0
MOVE.B mt_PBreakPos(PC),D0
LSL.W #4,D0
MOVE.W D0,mt_PatternPos
CLR.B mt_PBreakPos
CLR.B mt_PosJumpFlag
ADDQ.B #1,mt_SongPos
AND.B #$7F,mt_SongPos
MOVE.B mt_SongPos(PC),D1
MOVE.L mt_SongDataPtr(PC),A0
CMP.B 950(A0),D1
BLO.S mt_NoNewPosYet
CLR.B mt_SongPos
mt_NoNewPosYet
TST.B mt_PosJumpFlag
BNE.S mt_NextPosition
MOVEM.L (SP)+,D0-D4/A0-A6
RTS
mt_CheckEfx
BSR mt_UpdateFunk
MOVE.W n_cmd(A6),D0
AND.W #$0FFF,D0
BEQ.S mt_PerNop
MOVE.B n_cmd(A6),D0
AND.B #$0F,D0
BEQ.S mt_Arpeggio
CMP.B #1,D0
BEQ mt_PortaUp
CMP.B #2,D0
BEQ mt_PortaDown
CMP.B #3,D0
BEQ mt_TonePortamento
CMP.B #4,D0
BEQ mt_Vibrato
CMP.B #5,D0
BEQ mt_TonePlusVolSlide
CMP.B #6,D0
BEQ mt_VibratoPlusVolSlide
CMP.B #$E,D0
BEQ mt_E_Commands
SetBack MOVE.W n_period(A6),6(A5)
CMP.B #7,D0
BEQ mt_Tremolo
CMP.B #$A,D0
BEQ mt_VolumeSlide
mt_Return2
RTS
mt_PerNop
MOVE.W n_period(A6),6(A5)
RTS
mt_Arpeggio
MOVEQ #0,D0
MOVE.B mt_counter(PC),D0
DIVS #3,D0
SWAP D0
CMP.W #0,D0
BEQ.S mt_Arpeggio2
CMP.W #2,D0
BEQ.S mt_Arpeggio1
MOVEQ #0,D0
MOVE.B n_cmdlo(A6),D0
LSR.B #4,D0
BRA.S mt_Arpeggio3
mt_Arpeggio1
MOVEQ #0,D0
MOVE.B n_cmdlo(A6),D0
AND.B #15,D0
BRA.S mt_Arpeggio3
mt_Arpeggio2
MOVE.W n_period(A6),D2
BRA.S mt_Arpeggio4
mt_Arpeggio3
ASL.W #1,D0
MOVEQ #0,D1
MOVE.B n_finetune(A6),D1
MULU #36*2,D1
LEA mt_PeriodTable(PC),A0
ADD.L D1,A0
MOVEQ #0,D1
MOVE.W n_period(A6),D1
MOVEQ #36,D7
mt_arploop
MOVE.W (A0,D0.W),D2
CMP.W (A0),D1
BHS.S mt_Arpeggio4
ADDQ.L #2,A0
DBRA D7,mt_arploop
RTS
mt_Arpeggio4
MOVE.W D2,6(A5)
RTS
mt_FinePortaUp
TST.B mt_counter
BNE.S mt_Return2
MOVE.B #$0F,mt_LowMask
mt_PortaUp
MOVEQ #0,D0
MOVE.B n_cmdlo(A6),D0
AND.B mt_LowMask(PC),D0
MOVE.B #$FF,mt_LowMask
SUB.W D0,n_period(A6)
MOVE.W n_period(A6),D0
AND.W #$0FFF,D0
CMP.W #113,D0
BPL.S mt_PortaUskip
AND.W #$F000,n_period(A6)
OR.W #113,n_period(A6)
mt_PortaUskip
MOVE.W n_period(A6),D0
AND.W #$0FFF,D0
MOVE.W D0,6(A5)
RTS
mt_FinePortaDown
TST.B mt_counter
BNE mt_Return2
MOVE.B #$0F,mt_LowMask
mt_PortaDown
CLR.W D0
MOVE.B n_cmdlo(A6),D0
AND.B mt_LowMask(PC),D0
MOVE.B #$FF,mt_LowMask
ADD.W D0,n_period(A6)
MOVE.W n_period(A6),D0
AND.W #$0FFF,D0
CMP.W #856,D0
BMI.S mt_PortaDskip
AND.W #$F000,n_period(A6)
OR.W #856,n_period(A6)
mt_PortaDskip
MOVE.W n_period(A6),D0
AND.W #$0FFF,D0
MOVE.W D0,6(A5)
RTS
mt_SetTonePorta
MOVE.L A0,-(SP)
MOVE.W (A6),D2
AND.W #$0FFF,D2
MOVEQ #0,D0
MOVE.B n_finetune(A6),D0
MULU #37*2,D0
LEA mt_PeriodTable(PC),A0
ADD.L D0,A0
MOVEQ #0,D0
mt_StpLoop
CMP.W (A0,D0.W),D2
BHS.S mt_StpFound
ADDQ.W #2,D0
CMP.W #37*2,D0
BLO.S mt_StpLoop
MOVEQ #35*2,D0
mt_StpFound
MOVE.B n_finetune(A6),D2
AND.B #8,D2
BEQ.S mt_StpGoss
TST.W D0
BEQ.S mt_StpGoss
SUBQ.W #2,D0
mt_StpGoss
MOVE.W (A0,D0.W),D2
MOVE.L (SP)+,A0
MOVE.W D2,n_wantedperiod(A6)
MOVE.W n_period(A6),D0
CLR.B n_toneportdirec(A6)
CMP.W D0,D2
BEQ.S mt_ClearTonePorta
BGE mt_Return2
MOVE.B #1,n_toneportdirec(A6)
RTS
mt_ClearTonePorta
CLR.W n_wantedperiod(A6)
RTS
mt_TonePortamento
MOVE.B n_cmdlo(A6),D0
BEQ.S mt_TonePortNoChange
MOVE.B D0,n_toneportspeed(A6)
CLR.B n_cmdlo(A6)
mt_TonePortNoChange
TST.W n_wantedperiod(A6)
BEQ mt_Return2
MOVEQ #0,D0
MOVE.B n_toneportspeed(A6),D0
TST.B n_toneportdirec(A6)
BNE.S mt_TonePortaUp
mt_TonePortaDown
ADD.W D0,n_period(A6)
MOVE.W n_wantedperiod(A6),D0
CMP.W n_period(A6),D0
BGT.S mt_TonePortaSetPer
MOVE.W n_wantedperiod(A6),n_period(A6)
CLR.W n_wantedperiod(A6)
BRA.S mt_TonePortaSetPer
mt_TonePortaUp
SUB.W D0,n_period(A6)
MOVE.W n_wantedperiod(A6),D0
CMP.W n_period(A6),D0
BLT.S mt_TonePortaSetPer
MOVE.W n_wantedperiod(A6),n_period(A6)
CLR.W n_wantedperiod(A6)
mt_TonePortaSetPer
MOVE.W n_period(A6),D2
MOVE.B n_glissfunk(A6),D0
AND.B #$0F,D0
BEQ.S mt_GlissSkip
MOVEQ #0,D0
MOVE.B n_finetune(A6),D0
MULU #36*2,D0
LEA mt_PeriodTable(PC),A0
ADD.L D0,A0
MOVEQ #0,D0
mt_GlissLoop
CMP.W (A0,D0.W),D2
BHS.S mt_GlissFound
ADDQ.W #2,D0
CMP.W #36*2,D0
BLO.S mt_GlissLoop
MOVEQ #35*2,D0
mt_GlissFound
MOVE.W (A0,D0.W),D2
mt_GlissSkip
MOVE.W D2,6(A5) ; Set period
RTS
mt_Vibrato
MOVE.B n_cmdlo(A6),D0
BEQ.S mt_Vibrato2
MOVE.B n_vibratocmd(A6),D2
AND.B #$0F,D0
BEQ.S mt_vibskip
AND.B #$F0,D2
OR.B D0,D2
mt_vibskip
MOVE.B n_cmdlo(A6),D0
AND.B #$F0,D0
BEQ.S mt_vibskip2
AND.B #$0F,D2
OR.B D0,D2
mt_vibskip2
MOVE.B D2,n_vibratocmd(A6)
mt_Vibrato2
MOVE.B n_vibratopos(A6),D0
LEA mt_VibratoTable(PC),A4
LSR.W #2,D0
AND.W #$001F,D0
MOVEQ #0,D2
MOVE.B n_wavecontrol(A6),D2
AND.B #$03,D2
BEQ.S mt_vib_sine
LSL.B #3,D0
CMP.B #1,D2
BEQ.S mt_vib_rampdown
MOVE.B #255,D2
BRA.S mt_vib_set
mt_vib_rampdown
TST.B n_vibratopos(A6)
BPL.S mt_vib_rampdown2
MOVE.B #255,D2
SUB.B D0,D2
BRA.S mt_vib_set
mt_vib_rampdown2
MOVE.B D0,D2
BRA.S mt_vib_set
mt_vib_sine
MOVE.B 0(A4,D0.W),D2
mt_vib_set
MOVE.B n_vibratocmd(A6),D0
AND.W #15,D0
MULU D0,D2
LSR.W #7,D2
MOVE.W n_period(A6),D0
TST.B n_vibratopos(A6)
BMI.S mt_VibratoNeg
ADD.W D2,D0
BRA.S mt_Vibrato3
mt_VibratoNeg
SUB.W D2,D0
mt_Vibrato3
MOVE.W D0,6(A5)
MOVE.B n_vibratocmd(A6),D0
LSR.W #2,D0
AND.W #$003C,D0
ADD.B D0,n_vibratopos(A6)
RTS
mt_TonePlusVolSlide
BSR mt_TonePortNoChange
BRA mt_VolumeSlide
mt_VibratoPlusVolSlide
BSR.S mt_Vibrato2
BRA mt_VolumeSlide
mt_Tremolo
MOVE.B n_cmdlo(A6),D0
BEQ.S mt_Tremolo2
MOVE.B n_tremolocmd(A6),D2
AND.B #$0F,D0
BEQ.S mt_treskip
AND.B #$F0,D2
OR.B D0,D2
mt_treskip
MOVE.B n_cmdlo(A6),D0
AND.B #$F0,D0
BEQ.S mt_treskip2
AND.B #$0F,D2
OR.B D0,D2
mt_treskip2
MOVE.B D2,n_tremolocmd(A6)
mt_Tremolo2
MOVE.B n_tremolopos(A6),D0
LEA mt_VibratoTable(PC),A4
LSR.W #2,D0
AND.W #$001F,D0
MOVEQ #0,D2
MOVE.B n_wavecontrol(A6),D2
LSR.B #4,D2
AND.B #$03,D2
BEQ.S mt_tre_sine
LSL.B #3,D0
CMP.B #1,D2
BEQ.S mt_tre_rampdown
MOVE.B #255,D2
BRA.S mt_tre_set
mt_tre_rampdown
TST.B n_vibratopos(A6)
BPL.S mt_tre_rampdown2
MOVE.B #255,D2
SUB.B D0,D2
BRA.S mt_tre_set
mt_tre_rampdown2
MOVE.B D0,D2
BRA.S mt_tre_set
mt_tre_sine
MOVE.B 0(A4,D0.W),D2
mt_tre_set
MOVE.B n_tremolocmd(A6),D0
AND.W #15,D0
MULU D0,D2
LSR.W #6,D2
MOVEQ #0,D0
MOVE.B n_volume(A6),D0
TST.B n_tremolopos(A6)
BMI.S mt_TremoloNeg
ADD.W D2,D0
BRA.S mt_Tremolo3
mt_TremoloNeg
SUB.W D2,D0
mt_Tremolo3
BPL.S mt_TremoloSkip
CLR.W D0
mt_TremoloSkip
CMP.W #$40,D0
BLS.S mt_TremoloOk
MOVE.W #$40,D0
mt_TremoloOk
MOVE.W D0,8(A5)
MOVE.B n_tremolocmd(A6),D0
LSR.W #2,D0
AND.W #$003C,D0
ADD.B D0,n_tremolopos(A6)
RTS
mt_SampleOffset
MOVEQ #0,D0
MOVE.B n_cmdlo(A6),D0
BEQ.S mt_sononew
MOVE.B D0,n_sampleoffset(A6)
mt_sononew
MOVE.B n_sampleoffset(A6),D0
LSL.W #7,D0
CMP.W n_length(A6),D0
BGE.S mt_sofskip
SUB.W D0,n_length(A6)
LSL.W #1,D0
ADD.L D0,n_start(A6)
RTS
mt_sofskip
MOVE.W #$0001,n_length(A6)
RTS
mt_VolumeSlide
MOVEQ #0,D0
MOVE.B n_cmdlo(A6),D0
LSR.B #4,D0
TST.B D0
BEQ.S mt_VolSlideDown
mt_VolSlideUp
ADD.B D0,n_volume(A6)
CMP.B #$40,n_volume(A6)
BMI.S mt_vsuskip
MOVE.B #$40,n_volume(A6)
mt_vsuskip
MOVE.B n_volume(A6),D0
MOVE.W D0,8(A5)
RTS
mt_VolSlideDown
MOVEQ #0,D0
MOVE.B n_cmdlo(A6),D0
AND.B #$0F,D0
mt_VolSlideDown2
SUB.B D0,n_volume(A6)
BPL.S mt_vsdskip
CLR.B n_volume(A6)
mt_vsdskip
MOVE.B n_volume(A6),D0
MOVE.W D0,8(A5)
RTS
mt_PositionJump
MOVE.B n_cmdlo(A6),D0
SUBQ.B #1,D0
MOVE.B D0,mt_SongPos
mt_pj2 CLR.B mt_PBreakPos
ST mt_PosJumpFlag
RTS
mt_VolumeChange
MOVEQ #0,D0
MOVE.B n_cmdlo(A6),D0
CMP.B #$40,D0
BLS.S mt_VolumeOk
MOVEQ #$40,D0
mt_VolumeOk
MOVE.B D0,n_volume(A6)
MOVE.W D0,8(A5)
RTS
mt_PatternBreak
MOVEQ #0,D0
MOVE.B n_cmdlo(A6),D0
MOVE.L D0,D2
LSR.B #4,D0
MULU #10,D0
AND.B #$0F,D2
ADD.B D2,D0
CMP.B #63,D0
BHI.S mt_pj2
MOVE.B D0,mt_PBreakPos
ST mt_PosJumpFlag
RTS
mt_SetSpeed
MOVE.B 3(A6),D0
BEQ mt_Return2
CLR.B mt_counter
MOVE.B D0,mt_speed
RTS
mt_CheckMoreEfx
BSR mt_UpdateFunk
MOVE.B 2(A6),D0
AND.B #$0F,D0
CMP.B #$9,D0
BEQ mt_SampleOffset
CMP.B #$B,D0
BEQ mt_PositionJump
CMP.B #$D,D0
BEQ.S mt_PatternBreak
CMP.B #$E,D0
BEQ.S mt_E_Commands
CMP.B #$F,D0
BEQ.S mt_SetSpeed
CMP.B #$C,D0
BEQ mt_VolumeChange
BRA mt_PerNop
mt_E_Commands
MOVE.B n_cmdlo(A6),D0
AND.B #$F0,D0
LSR.B #4,D0
BEQ.S mt_FilterOnOff
CMP.B #1,D0
BEQ mt_FinePortaUp
CMP.B #2,D0
BEQ mt_FinePortaDown
CMP.B #3,D0
BEQ.S mt_SetGlissControl
CMP.B #4,D0
BEQ mt_SetVibratoControl
CMP.B #5,D0
BEQ mt_SetFineTune
CMP.B #6,D0
BEQ mt_JumpLoop
CMP.B #7,D0
BEQ mt_SetTremoloControl
CMP.B #9,D0
BEQ mt_RetrigNote
CMP.B #$A,D0
BEQ mt_VolumeFineUp
CMP.B #$B,D0
BEQ mt_VolumeFineDown
CMP.B #$C,D0
BEQ mt_NoteCut
CMP.B #$D,D0
BEQ mt_NoteDelay
CMP.B #$E,D0
BEQ mt_PatternDelay
CMP.B #$F,D0
BEQ mt_FunkIt
RTS
mt_FilterOnOff
MOVE.B n_cmdlo(A6),D0
AND.B #1,D0
ASL.B #1,D0
AND.B #$FD,$BFE001
OR.B D0,$BFE001
RTS
mt_SetGlissControl
MOVE.B n_cmdlo(A6),D0
AND.B #$0F,D0
AND.B #$F0,n_glissfunk(A6)
OR.B D0,n_glissfunk(A6)
RTS
mt_SetVibratoControl
MOVE.B n_cmdlo(A6),D0
AND.B #$0F,D0
AND.B #$F0,n_wavecontrol(A6)
OR.B D0,n_wavecontrol(A6)
RTS
mt_SetFineTune
MOVE.B n_cmdlo(A6),D0
AND.B #$0F,D0
MOVE.B D0,n_finetune(A6)
RTS
mt_JumpLoop
TST.B mt_counter
BNE mt_Return2
MOVE.B n_cmdlo(A6),D0
AND.B #$0F,D0
BEQ.S mt_SetLoop
TST.B n_loopcount(A6)
BEQ.S mt_jumpcnt
SUBQ.B #1,n_loopcount(A6)
BEQ mt_Return2
mt_jmploop MOVE.B n_pattpos(A6),mt_PBreakPos
ST mt_PBreakFlag
RTS
mt_jumpcnt
MOVE.B D0,n_loopcount(A6)
BRA.S mt_jmploop
mt_SetLoop
MOVE.W mt_PatternPos(PC),D0
LSR.W #4,D0
MOVE.B D0,n_pattpos(A6)
RTS
mt_SetTremoloControl
MOVE.B n_cmdlo(A6),D0
AND.B #$0F,D0
LSL.B #4,D0
AND.B #$0F,n_wavecontrol(A6)
OR.B D0,n_wavecontrol(A6)
RTS
mt_RetrigNote
MOVE.L D1,-(SP)
MOVEQ #0,D0
MOVE.B n_cmdlo(A6),D0
AND.B #$0F,D0
BEQ.S mt_rtnend
MOVEQ #0,D1
MOVE.B mt_counter(PC),D1
BNE.S mt_rtnskp
MOVE.W (A6),D1
AND.W #$0FFF,D1
BNE.S mt_rtnend
MOVEQ #0,D1
MOVE.B mt_counter(PC),D1
mt_rtnskp
DIVU D0,D1
SWAP D1
TST.W D1
BNE.S mt_rtnend
mt_DoRetrig
MOVE.W n_dmabit(A6),$DFF096 ; Channel DMA off
MOVE.L n_start(A6),(A5) ; Set sampledata pointer
MOVE.W n_length(A6),4(A5) ; Set length
MOVE.W #300,D0
mt_rtnloop1
DBRA D0,mt_rtnloop1
MOVE.W n_dmabit(A6),D0
BSET #15,D0
MOVE.W D0,$DFF096
MOVE.W #300,D0
mt_rtnloop2
DBRA D0,mt_rtnloop2
MOVE.L n_loopstart(A6),(A5)
MOVE.L n_replen(A6),4(A5)
mt_rtnend
MOVE.L (SP)+,D1
RTS
mt_VolumeFineUp
TST.B mt_counter
BNE mt_Return2
MOVEQ #0,D0
MOVE.B n_cmdlo(A6),D0
AND.B #$F,D0
BRA mt_VolSlideUp
mt_VolumeFineDown
TST.B mt_counter
BNE mt_Return2
MOVEQ #0,D0
MOVE.B n_cmdlo(A6),D0
AND.B #$0F,D0
BRA mt_VolSlideDown2
mt_NoteCut
MOVEQ #0,D0
MOVE.B n_cmdlo(A6),D0
AND.B #$0F,D0
CMP.B mt_counter(PC),D0
BNE mt_Return2
CLR.B n_volume(A6)
MOVE.W #0,8(A5)
RTS
mt_NoteDelay
MOVEQ #0,D0
MOVE.B n_cmdlo(A6),D0
AND.B #$0F,D0
CMP.B mt_Counter,D0
BNE mt_Return2
MOVE.W (A6),D0
BEQ mt_Return2
MOVE.L D1,-(SP)
BRA mt_DoRetrig
mt_PatternDelay
TST.B mt_counter
BNE mt_Return2
MOVEQ #0,D0
MOVE.B n_cmdlo(A6),D0
AND.B #$0F,D0
TST.B mt_PattDelTime2
BNE mt_Return2
ADDQ.B #1,D0
MOVE.B D0,mt_PattDelTime
RTS
mt_FunkIt
TST.B mt_counter
BNE mt_Return2
MOVE.B n_cmdlo(A6),D0
AND.B #$0F,D0
LSL.B #4,D0
AND.B #$0F,n_glissfunk(A6)
OR.B D0,n_glissfunk(A6)
TST.B D0
BEQ mt_Return2
mt_UpdateFunk
MOVEM.L A0/D1,-(SP)
MOVEQ #0,D0
MOVE.B n_glissfunk(A6),D0
LSR.B #4,D0
BEQ.S mt_funkend
LEA mt_FunkTable(PC),A0
MOVE.B (A0,D0.W),D0
ADD.B D0,n_funkoffset(A6)
BTST #7,n_funkoffset(A6)
BEQ.S mt_funkend
CLR.B n_funkoffset(A6)
MOVE.L n_loopstart(A6),D0
MOVEQ #0,D1
MOVE.W n_replen(A6),D1
ADD.L D1,D0
ADD.L D1,D0
MOVE.L n_wavestart(A6),A0
ADDQ.L #1,A0
CMP.L D0,A0
BLO.S mt_funkok
MOVE.L n_loopstart(A6),A0
mt_funkok
MOVE.L A0,n_wavestart(A6)
MOVEQ #-1,D0
SUB.B (A0),D0
MOVE.B D0,(A0)
mt_funkend
MOVEM.L (SP)+,A0/D1
RTS
mt_FunkTable dc.b 0,5,6,7,8,10,11,13,16,19,22,26,32,43,64,128
mt_VibratoTable
dc.b 0, 24, 49, 74, 97,120,141,161
dc.b 180,197,212,224,235,244,250,253
dc.b 255,253,250,244,235,224,212,197
dc.b 180,161,141,120, 97, 74, 49, 24
mt_PeriodTable
; Tuning 0, Normal
dc.w 856,808,762,720,678,640,604,570,538,508,480,453
dc.w 428,404,381,360,339,320,302,285,269,254,240,226
dc.w 214,202,190,180,170,160,151,143,135,127,120,113
; Tuning 1
dc.w 850,802,757,715,674,637,601,567,535,505,477,450
dc.w 425,401,379,357,337,318,300,284,268,253,239,225
dc.w 213,201,189,179,169,159,150,142,134,126,119,113
; Tuning 2
dc.w 844,796,752,709,670,632,597,563,532,502,474,447
dc.w 422,398,376,355,335,316,298,282,266,251,237,224
dc.w 211,199,188,177,167,158,149,141,133,125,118,112
; Tuning 3
dc.w 838,791,746,704,665,628,592,559,528,498,470,444
dc.w 419,395,373,352,332,314,296,280,264,249,235,222
dc.w 209,198,187,176,166,157,148,140,132,125,118,111
; Tuning 4
dc.w 832,785,741,699,660,623,588,555,524,495,467,441
dc.w 416,392,370,350,330,312,294,278,262,247,233,220
dc.w 208,196,185,175,165,156,147,139,131,124,117,110
; Tuning 5
dc.w 826,779,736,694,655,619,584,551,520,491,463,437
dc.w 413,390,368,347,328,309,292,276,260,245,232,219
dc.w 206,195,184,174,164,155,146,138,130,123,116,109
; Tuning 6
dc.w 820,774,730,689,651,614,580,547,516,487,460,434
dc.w 410,387,365,345,325,307,290,274,258,244,230,217
dc.w 205,193,183,172,163,154,145,137,129,122,115,109
; Tuning 7
dc.w 814,768,725,684,646,610,575,543,513,484,457,431
dc.w 407,384,363,342,323,305,288,272,256,242,228,216
dc.w 204,192,181,171,161,152,144,136,128,121,114,108
; Tuning -8
dc.w 907,856,808,762,720,678,640,604,570,538,508,480
dc.w 453,428,404,381,360,339,320,302,285,269,254,240
dc.w 226,214,202,190,180,170,160,151,143,135,127,120
; Tuning -7
dc.w 900,850,802,757,715,675,636,601,567,535,505,477
dc.w 450,425,401,379,357,337,318,300,284,268,253,238
dc.w 225,212,200,189,179,169,159,150,142,134,126,119
; Tuning -6
dc.w 894,844,796,752,709,670,632,597,563,532,502,474
dc.w 447,422,398,376,355,335,316,298,282,266,251,237
dc.w 223,211,199,188,177,167,158,149,141,133,125,118
; Tuning -5
dc.w 887,838,791,746,704,665,628,592,559,528,498,470
dc.w 444,419,395,373,352,332,314,296,280,264,249,235
dc.w 222,209,198,187,176,166,157,148,140,132,125,118
; Tuning -4
dc.w 881,832,785,741,699,660,623,588,555,524,494,467
dc.w 441,416,392,370,350,330,312,294,278,262,247,233
dc.w 220,208,196,185,175,165,156,147,139,131,123,117
; Tuning -3
dc.w 875,826,779,736,694,655,619,584,551,520,491,463
dc.w 437,413,390,368,347,328,309,292,276,260,245,232
dc.w 219,206,195,184,174,164,155,146,138,130,123,116
; Tuning -2
dc.w 868,820,774,730,689,651,614,580,547,516,487,460
dc.w 434,410,387,365,345,325,307,290,274,258,244,230
dc.w 217,205,193,183,172,163,154,145,137,129,122,115
; Tuning -1
dc.w 862,814,768,725,684,646,610,575,543,513,484,457
dc.w 431,407,384,363,342,323,305,288,272,256,242,228
dc.w 216,203,192,181,171,161,152,144,136,128,121,114
mt_chan1temp dc.l 0,0,0,0,0,$00010000,0, 0,0,0,0
mt_chan2temp dc.l 0,0,0,0,0,$00020000,0, 0,0,0,0
mt_chan3temp dc.l 0,0,0,0,0,$00040000,0, 0,0,0,0
mt_chan4temp dc.l 0,0,0,0,0,$00080000,0, 0,0,0,0
mt_SampleStarts dc.l 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
dc.l 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
mt_SongDataPtr dc.l 0
mt_speed dc.b 6
mt_counter dc.b 0
mt_SongPos dc.b 0
mt_PBreakPos dc.b 0
mt_PosJumpFlag dc.b 0
mt_PBreakFlag dc.b 0
mt_LowMask dc.b 0
mt_PattDelTime dc.b 0
mt_PattDelTime2 dc.b 0,0
mt_PatternPos dc.w 0
mt_DMACONtemp dc.w 0
;/* End of File */
Section copdat,Data_c
mid: dc.w 0
midadd: dc.l 0
old_copper: dc.l 0
graphics: dc.l 0
dos: dc.l 0
my_copper:
dc.w $100,$0200 ; 4 bp - lores -
dc.w $104,%0110 ; bp control reg
dc.w $108,0 ; bp modulo - odd
dc.w $10a,0 ; bp modulo - even
dc.w $180,black
dc.w $1fc,0
dc.w $1a0,$000
dc.w $1a2,$00a
dc.w $1a4,$006
dc.w $1a6,$003
dc.w $1a8,$000
dc.w $1aa,$00a
dc.w $1ac,$006
dc.w $1ae,$003
dc.w $120
spr1_lo: dc.w 0,$122
spr1_hi: dc.w 0,$124
spr2_lo: dc.w 0,$126
spr2_hi: dc.w 0,$128
spr3_lo: dc.w 0,$12a
spr3_hi: dc.w 0
dc.w $12c,0,$12e,0
dc.w $130,0,$132,0
dc.w $134,0,$136,0
dc.w $138,0,$13a,0
dc.w $13c,0,$13e,0
dc.w $92,$30 ; bp start horz
dc.w $94,$c8 ; bp stop horz
dc.w $8e,$2679 ; bp window start left
dc.w $90,$2cc7 ; bp window bot right
dc.w $102,$ff
cmap: dc.w $1fe,0
dc.w $182,0
dc.w $184,0
dc.w $186,0
dc.w $188,0
dc.w $18a,0
dc.w $18c,0
dc.w $18e,0
dc.w $190,0
dc.w $192,0
dc.w $194,0
dc.w $196,0
dc.w $198,0
dc.w $19a,0
dc.w $19c,0
dc.w $19e,0
dc.w $e0
bitplane0_hi: dc.w 0,$e2
bitplane0_lo: dc.w 0,$e4
bitplane1_hi: dc.w 0,$e6
bitplane1_lo: dc.w 0,$e8
bitplane2_hi: dc.w 0,$ea
bitplane2_lo: dc.w 0,$ec
bitplane3_hi: dc.w 0,$ee
bitplane3_lo: dc.w 0
dc.w $2800+xpos1,$fffe,$180,$008,$2900+xpos2,$fffe,$180,$000
dc.w $2e01,$ff00,$100,$4200
dc.w $7001,$ff00
display_on: dc.w $100,$1200
colour_on: dc.w $182,$fff
dc.w $102,$0f
dc.w $0e0
bitplane4_hi: dc.w 0
dc.w $e2
bitplane4_lo: dc.w 0
dc.w $ffe1,$fffe ; wait for end of ntsc screen
dc.w $2800+xpos1,$fffe,$180,$008,$2900+xpos2,$fffe,$180,black
dc.w $9c,$8010 ; irq set bits - ?
dc.w $ffff,$fffe ; end of copper list
spritex1:
dc.b 052,143,068,0
setsprite
dc.b 070,24,086,0
setsprite
dc.b 088,11,104,0
setsprite
dc.b 106,95,122,0
setsprite
dc.b 124,33,140,0
setsprite
dc.b 142,124,158,0
setsprite
dc.b 160,83,176,0
setsprite
dc.b 178,204,194,0
setsprite
dc.b 196,24,212,0
setsprite
dc.b 214,175,230,0
setsprite
dc.b 232,154,248,0
setsprite
dc.b 0,240,016,%00000110
setsprite
dc.b 18,168,34,%00000110
setsprite
dc.w 0,0,0,0
spritex2:
dc.b 056,68,072,0
setsprite
dc.b 074,120,090,0
setsprite
dc.b 092,154,108,0
setsprite
dc.b 110,175,126,0
setsprite
dc.b 128,240,144,0
setsprite
dc.b 146,10,162,0
setsprite
dc.b 164,180,180,0
setsprite
dc.b 182,120,198,0
setsprite
dc.b 200,230,216,0
setsprite
dc.b 218,50,234,0
setsprite
dc.b 236,100,252,0
setsprite
dc.b 4,120,020,%00000110
setsprite
dc.b 22,10,38,%00000110
setsprite
dc.w 0,0,0,0
spritex3:
dc.b 060,038,076,0
setsprite
dc.b 078,080,094,0
setsprite
dc.b 096,054,112,0
setsprite
dc.b 132,140,148,0
setsprite
dc.b 150,065,166,0
setsprite
dc.b 168,90,184,0
setsprite
dc.b 186,220,202,0
setsprite
dc.b 204,130,220,0
setsprite
dc.b 222,200,238,0
setsprite
dc.b 239,50,255,0
setsprite
dc.b 000,70,016,%00000110
setsprite
dc.b 018,30,034,%00000110
setsprite
dc.w 0,0,0,0
oldint: dc.l 0
olddma: dc.l 0
oldv3: dc.l 0
glib: dc.b "graphics.library",0
dlib: dc.b "dos.library",0
even
screen: incbin "dh0:data/misc/singlelogo.bin"
font: incbin "dh0:data/wrd/keff10.wrd"
incbin "dh0:data/wrd/symbol2.wrd"
newscr: dc.l 0
flag: dc.l 0
bplen equ ((font-screen)-32)/4
top_of_copper equ 44+(bplen/40)
down equ top_of_copper+108
page: dc.l 0
fade_colour: dc.w 0
mt_data: ;incbin "dh0:modules/lsd/chip/mod.stoopidmuzak"
dcb.b 12,0
page1: dc.b "»»» Lard Blasters+ «««",0
dc.b " ",0
dc.b " ",0
dc.b " ",0
dc.b "Fixed to work on all PAL Amigas",0
dc.b "by Muridae of LSD",0
dc.b " ",0
dc.b " ",0
dc.b " ",0
dc.b " ",0
dc.b 0
page2: dc.b " Call LSD's cool boards:",0
dc.b " ",0
dc.b "--- THE POOL (LSD WHQ) ---",0
dc.b "+44 (0)51 480 7604",0
dc.b " ",0
dc.b "--- PURE SYNCHRONIZATION (UK) ---",0
dc.b "+44 (0)81 308 0371",0
dc.b " ",0
dc.b "--- PRAYER GATE (USHQ) ---",0
dc.b "+1 501 336 9661",0
dc.b 0
page3: dc.b " Call LSD's cool boards:",0
dc.b " ",0
dc.b "--- PANIC ZONE (USA) ---",0
dc.b "+1 508 234 2150",0
dc.b " ",0
dc.b "--- PHREAKERS PHUNHOUSE (GHQ) ---",0
dc.b "+49 711 345 0385",0
dc.b " ",0
dc.b "--- THE DESOLATE ONE (G) ---",0
dc.b "+49 911 443 537",0
dc.b 0
page4: dc.b " Call LSD's cool boards:",0
dc.b " ",0
dc.b "--- LOW SPARK (PHQ) ---",0
dc.b "NODE 1 : +351 19 431 348",0
dc.b "NODE 2 : +351 19 442 089",0
dc.b " ",0
dc.b "--- RIOT ZONE (USA) ---",00
dc.b "CURRENTLY OFF LINE",0
dc.b " ",0
dc.b "GREETING GO TO ALL OUR FRIENDS",0
dc.b "WORLDWIDE.",0
dc.b 0
section screen,bss_C
screen2: ds.b 80*256
End